.. _ceilActionModeMulti_Set: ceilActionModeMulti_Set ======================= ----------------------- SYNOPSIS -------- .. code-block:: none VT_I4 ceilActionModeMulti_Set( VT_I4 NodeID, VT_I4 ModuleType, VT_I4 IniChan, VT_I4 NumChan, VT_I4 ActionModes ) DESCRIPTION ----------- - 해당 원격 노드 슬레이브 모듈의 다중 채널에 대해 인터락 동작 모드를 설정합니다. PARAMETER --------- - NodeID : 인터락 동작 모드를 설정할 채널 속한 원격 노드 ID 를 설정합니다. - ModuleType : 인터락 동작 모드를 설정할 대상 모듈 을 선택합니다. +-------------+--------------------------------------------------------------------+ | Value | Meaning | +=============+====================================================================+ | 0 (MOD_CPU) | 마스터 모듈 (ceNM-SE) 을 선택합니다. | +-------------+--------------------------------------------------------------------+ | 1 (MOD_AO) | 슬레이브 모듈 중 아날로그 출력 모듈(ceAO02A) 을 선택합니다. | +-------------+--------------------------------------------------------------------+ | 2 (MOD_DO) | 슬레이브 모듈 중 디지털 출력 모듈(ceD16CM, ceDO32N) 을 선택합니다. | +-------------+--------------------------------------------------------------------+ | 3 (MOD_MOT) | 슬레이브 모듈 중 모션 모듈(ceMC02P)을 선택합니다. | +-------------+--------------------------------------------------------------------+ - IniChan : 인터락 동작 모드를 설정할 시작 채널 번호. 통합 채널로 관리되는 채널 번호를 의미하며,. 상수 값으로 0 (Zero Based) 이상, (최대 통합 채널수 - 1) 이하의 값을 채널 번호로 설정할 수 있습니다. - NumChan : 시작 채널로부터 몇 개의 채널의 상태를 확인할 것인지에 대한 값을 전달합니다. (32. Bit 변수를 Bit Mask 로 사용하며, 채널당 모드는 0, 1, 2, 3 의 4 가지 상태에 대해 2 Bit 가 필요합니다. 즉, 한번에 최대 16 개의 채널에 대해 설정 가능합니다). - ActionModes : 인터락 동작 모드를 설정합니다. Module_Type 에서 설정한 모듈 종류에 따라. 인터락 동작 모드는 다음과 같이 구분됩니다. 복수개의 채널에 대한 Action Mode 를 Bit Mask 로 설정하시면 됩니다. +-------------------+-----------------------+---------------------------------------------+ | Slave Module | Value | Meaning | +===================+=======================+=============================================+ || || 0 (CPU_ACT_RESERVED) || Reserved | || || 1 (CPU_ACT_REBOOT) || Reboot | || ceNM-SE || 2 (CPU_ACT_KEEP) || 현재 상태 유지(불변) [Default] | +-------------------+-----------------------+---------------------------------------------+ || || 0 (AO_ACT_MIN) || 최소 전압출력 값(0 V, 0 mA) 출력 [Default] | || ceAO02N || 1 (AO_RESERVED1) || Reserved | || || 2 (AO_ACT_KEEP) || 현재 상태 유지(불변) | +-------------------+-----------------------+---------------------------------------------+ || || 0 (DO_ACT_OFF) || OFF 출력 [Default] | || ceD16CN, ceDO32N || 1 (DO_ACT_ON) || ON 출력 | || || 2 (DO_ACT_KEEP) || 현재 상태 유지(불변) | +-------------------+-----------------------+---------------------------------------------+ || || 0(MOT_ACT_DECELSTOP) || 감속후 정지 [Default] | || ceMC02P || 1 (MOT_ACT_EMGSTOP1) || 즉시 정지 | || || 2 (MOT_ACT_KEEP) || 현재 상태 유지(불변) | +-------------------+-----------------------+---------------------------------------------+ RETURN VALUE ------------ +----------------+-------------------------------------------------------+ | Value | Meaning | +================+=======================================================+ | 음수 | 수행 실패. 자세한 내용은 '에러 처리' 편을 참고합니다. | +----------------+-------------------------------------------------------+ | 0 (ceERR_NONE) | 수행 성공 | +----------------+-------------------------------------------------------+ Example ------- .. code-block:: cpp :linenos: C/C++ #include “ceSDK.h” #include “ceSDKDef.h” #define NODE_ID 1 // 노드 IP 를 192.168.1.1 로 지정 // Module type: ceNM-SE(0), ceAO02N(1), ceDxxN(2), ceMC02P(3) enum {MOD_CPU, MOD_AO, MOD_DO, MOD_MOT}; // CPU (ceNM-SE) : reserved(0), reboot(1), 현재상태유지/불변(2) => reboot(1) 인 경우만 노드 마스터가 재부팅됨. enum {CPU_ACT_RESERVED, CPU_ACT_REBOOT, CPU_ACT_KEEP}; // Analog Output 모듈의 인터락 Action 정의 : 0: 최소 전압 값(0V, 0 mA)출력, 1: reserved, 2: 현재상태 유지(불변) enum {AO_ACT_MIN, AO_RESERVED, AO_ACT_KEEP}; // Digital Output 모듈의 인터락 Action 정의 : off 출력(0), on 출력(1), 현출력상태 유지(2) enum {DO_ACT_OFF, DO_ACT_ON, DO_ACT_KEEP}; // Motion 모듈의 인터락 Action 정의 : 0: 감속후 정지 (default), 1: 즉시 정지, 2: 현재상태 유지(불변) enum {MOT_ACT_DECELSTOP, MOT_ACT_EMGSTOP, MOT_ACT_KEEP}; VOID CInterlockTestDlg::OnBtnActModeSetOne { long val; // 1. AO 모듈 다중 채널의 인터락 동작 설정 // Module Type => 1: 아날로그출력모듈 // IniChan => 0 번 채널부터 // NumChan => 2 개 (0, 1 번 채널에 대해 설정) // Action Mode => 채널별로 다르게 설정 // 0 번채널: AO_ACT_KEEP (2), 1 번채널:AO_ACT_OFF (0) long nResult = ceilActionModeMulti_Set (NODE_ID, MOD_AO, 0, 2, 0x2); // 이진수로 0010 으로 설정. // 2. AO 모듈 다중 채널의 인터락 동작 설정 확인 nResult = ceilActionModeMulti_Get (NODE_ID, MOD_AO, 0, 2, &val); // 3. DO 모듈 다중 채널의 인터락 동작 설정 // Module Type => 2: 디지털출력모듈 // IniChan => 0 번 채널부터 // NumChan => 16 개 (0 ~15 번 채널에 대해 설정) // Action Mode => 상위 8 개 채널은 OFF (0), 하위 8 개 채널은 기존 출력을 유지(2) 하도록 설정 // 이진수로 00000000000000001010101010101010 nResult = ceilActionModeMulti_Set (NODE_ID, MOD_DO, 0, 16, 0x0000AAAA); // 4. DO 모듈 다중 채널의 인터락 동작 설정 확인 nResult = ceilActionModeMulti_Get (NODE_ID, MOD_DO, 0, 16, &val); // 5. MOTION 모듈 다중 채널의 인터락 동작 설정 // Module Type => 3: 모션 모듈 // IniChan => 0 번 채널부터 // NumChan => 4 개 (0~3 번 축에 대해 설정) // Action Mode => 축 0 번:비상정지(1), 축 1:감속후정지(0),축 2:현상태유지(2),축 3:비상정지(1) 로 설정 // 이진수로 01100001 nResult = ceilActionModeMulti_Set (NODE_ID, MOD_MOT, 0, 4, 0x61); // 6. MOTION 모듈 다중 채널의 인터락 동작 설정 확인 nResult = ceilActionModeMulti_Get (NODE_ID, MOD_MOT, 0, 4, &val); }